// 用户表类型
export interface User {
  id: number
  name: string
  color: string
  casdoor_id: string | null
  email: string | null
  avatar: string | null
  created_at: string
}

// 项目表类型
export interface Project {
  id: number
  name: string
  description: string
  isArchived: boolean
  created_at: string
}

// Todo列表类型
export interface TodoItem {
  id: number
  content: string
  created_by: number
  tags: string | null
  status: '待完成' | '进行中' | '待测试' | '已完成'
  assigned_to: number | null
  archived: boolean
  created_at: string
}

// 带用户信息的Todo类型
export interface TodoItemWithUsers extends TodoItem {
  creator_name?: string
  creator_color?: string
  assignee_name?: string | null
  assignee_color?: string | null
}

// Todo与项目关联类型
export interface TodoProjectLink {
  id: number
  todolist_id: number
  project_id: number
}

// 用户与项目关联类型
export interface UserProjectLink {
  id: number
  user_id: number
  project_id: number
}

// 审计日志类型
export interface Audit {
  id: number
  project_id: number | null
  todolist_id: number | null
  user_id: number
  action: string
  created_at: string
}

// 带用户信息的审计日志类型
export interface AuditWithUser extends Audit {
  user_name: string
}

// 创建Todo的输入类型
export interface CreateTodoInput {
  content: string
  created_by: number
  tags?: string
  status?: '待完成' | '进行中' | '待测试' | '已完成'
  assigned_to?: number
}

// 更新Todo的输入类型
export interface UpdateTodoInput {
  content?: string
  tags?: string
  assigned_to?: number
  status?: '待完成' | '进行中' | '待测试' | '已完成'
}

// 创建项目的输入类型
export interface CreateProjectInput {
  name: string
  description: string
  memberIds?: number[] // 成员ID列表（可选，因为会自动包含创建者）
}

// 审计操作类型
export interface AuditAction {
  type: 'create' | 'update' | 'delete' | 'status_change' | 'assign' | 'archive'
  entity: 'todo' | 'project' | 'user'
  changes?: Record<string, any>
  old_values?: Record<string, any>
  new_values?: Record<string, any>
} 